package com.hsnn.medstgmini.sys.service.impl;

import javax.transaction.Transactional;

import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.hsnn.medstgmini.base.dict.dao.DicAreaDao;
import com.hsnn.medstgmini.base.dict.model.DicArea;
import com.hsnn.medstgmini.base.std.dao.StdHealthbureauDao;
import com.hsnn.medstgmini.base.std.model.StdHealthbureau;
import com.hsnn.medstgmini.sys.dao.RegHealthbureauDao;
import com.hsnn.medstgmini.sys.model.AuditType;
import com.hsnn.medstgmini.sys.model.HenburType;
import com.hsnn.medstgmini.sys.model.RegHealthbureau;
import com.hsnn.medstgmini.sys.service.RegHealthbureauManager;
import com.hsnn.medstgmini.util.Pagination;

@Service
public class RegHealthbureauManagerImp implements RegHealthbureauManager {
	@Autowired
	private RegHealthbureauDao regHealthbureauDao;

	@Autowired
	private StdHealthbureauDao stdHealthbureauDao;

	@Autowired
	private DicAreaDao areaDao;

	/**
	 * @category author 韩守松
	 * @date 2015年11月2日
	 * @param @param regHealthbureau
	 * @param @return
	 */
	@Transactional
	public void saveRegheaBurInfo(RegHealthbureau regHealthbureau) {
		regHealthbureauDao.saveRegheaBurInfo(regHealthbureau);
	}

	/**
	 * @category 获取审核卫生局信息列表
	 * @author 韩守松
	 * @date 2015年11月3日
	 * @param @param page
	 * @param @param regHealthbureau
	 * @param @return
	 */
	@Override
	public Pagination getAuditUserList(Pagination page,
			RegHealthbureau regHealthbureau) {
		return regHealthbureauDao.getAuditUserList(page, regHealthbureau);
	}

	/**
	 * @category 根据卫生局注册id获取信息
	 * @author 韩守松
	 * @date 2015年11月3日
	 * @param @param heaBurId
	 * @param @return
	 */
	@Override
	public RegHealthbureau getAuditHeaBurById(String heaBurId) {
		return regHealthbureauDao.getAuditHeaBurById(heaBurId);
	}

	/**
	 * @category 保存卫生局注册信息审核
	 * @author 韩守松
	 * @date 2015年11月3日
	 * @param @param regHealthbureau
	 */
	@Override
	public void saveAuditHeaBur(RegHealthbureau regHealthbureau) {
		String heaBurId = "";
		if (regHealthbureau != null) {
			// 通过保存到基础库
			if (regHealthbureau.getAuditStatus() == AuditType.audited.getKey()) {
				DicArea area = areaDao.getDicAreaById(regHealthbureau.getArea()
						.getAreaid());
				// 入医疗机构基础库
				if (regHealthbureauDao.checkHeaBurExist(regHealthbureau)) { // 覆盖更新
					StdHealthbureau hi = stdHealthbureauDao
							.getExistHeaBur(regHealthbureau);
					heaBurId = hi.getHeaBurId();
					BeanUtils.copyProperties(regHealthbureau, hi);
					hi.setUpdUser(regHealthbureau.getAuditor());
					hi.setHeaBurId(heaBurId);
					hi.setArea(area);
					hi.setHeaBurType(HenburType.wsj.getKey());
					stdHealthbureauDao.saveHeaBurInfo(hi, 1);
				} else { // 新增
					StdHealthbureau hi = new StdHealthbureau();
					BeanUtils.copyProperties(regHealthbureau, hi);
					hi.setUpdUser(regHealthbureau.getAuditor());
					hi.setArea(area);
					hi.setHeaBurType(HenburType.wsj.getKey());
					stdHealthbureauDao.saveHeaBurInfo(hi, 0);
				}
			}
			// 保存注册表
			regHealthbureauDao.saveAuditHeaBur(regHealthbureau);
		}

	}

	/**
	 * @category 校验注册的卫生局在卫生局库中是否存在
	 * @author 韩守松
	 * @date 2015年11月3日
	 * @param @param regHealthbureau
	 * @param @return
	 */
	@Override
	public boolean checkHeaBurExist(RegHealthbureau regHealthbureau) {
		return regHealthbureauDao.checkHeaBurExist(regHealthbureau);
	}

	/**
	 * @category 查询卫生局注册信息审核日志列表
	 * @author 韩守松
	 * @date 2015年11月4日
	 * @param @param page
	 * @param @param regHealthbureau
	 * @param @return
	 */
	public Pagination getAuditUserLogList(Pagination page,
			RegHealthbureau regHealthbureau) {
		return regHealthbureauDao.getAuditUserLogList(page, regHealthbureau);
	}
}
